/*
 *   项目名称：rpc-demo
 *   文件名称：com.xiaolon.example.provider.ProviderExample
 *
 *   创建人：  ZHOU XIAO LONG
 *   创建日期：2024/12/4
 *
 */
package com.xiaolon.example.provider;

import com.xiaolon.example.common.service.UserService;
import com.xiaolon.rpc.RpcApplication;
import com.xiaolon.rpc.bootstrap.ProviderBootstrap;
import com.xiaolon.rpc.config.RegistryConfig;
import com.xiaolon.rpc.config.RpcConfig;
import com.xiaolon.rpc.model.ServiceMetaInfo;
import com.xiaolon.rpc.model.ServiceRegisterInfo;
import com.xiaolon.rpc.registry.LocalRegistry;
import com.xiaolon.rpc.registry.Registry;
import com.xiaolon.rpc.registry.RegistryFactory;
import com.xiaolon.rpc.server.HttpServer;
import com.xiaolon.rpc.server.VertxHttpServer;

import java.util.ArrayList;
import java.util.List;

/**
 * 类描述： ProviderExample
 * 服务提供者示例
 **/
public class ProviderExample {

    // 框架改进: 启动方式
    public static void main(String[] args) {
        // 要注册的服务
        List<ServiceRegisterInfo<?>> serviceRegisterInfoList = new ArrayList<>();
        ServiceRegisterInfo serviceRegisterInfo = new ServiceRegisterInfo(UserService.class.getName(), UserServiceImpl.class);
        serviceRegisterInfoList.add(serviceRegisterInfo);

        // 服务提供者初始化
        ProviderBootstrap.init(serviceRegisterInfoList);
    }

//    public static void main(String[] args) {
//        // 初始化RPC
//        RpcApplication.init();
//
//        // 注册服务
//        String serviceName = UserService.class.getName();
//        LocalRegistry.registry(serviceName, UserServiceImpl.class);
//
//        // 注册服务到注册中心
//        RpcConfig rpcConfig = RpcApplication.getRpcConfig();
//        RegistryConfig registryConfig = rpcConfig.getRegistryConfig();
//        Registry registry = RegistryFactory.getInstance(registryConfig.getRegistry());
//        ServiceMetaInfo serviceMetaInfo = new ServiceMetaInfo();
//        serviceMetaInfo.setServiceName(serviceName);
//        serviceMetaInfo.setServiceHost(rpcConfig.getHost());
//        serviceMetaInfo.setServicePort(rpcConfig.getPort());
//        try{
//            registry.register(serviceMetaInfo);
//        }catch (Exception e){
//            throw new RuntimeException(e);
//        }
//
//        // 启动web服务
//        HttpServer httpServer = new VertxHttpServer();
//        httpServer.doStart(RpcApplication.getRpcConfig().getPort());
//
//    }
}